#include <iostream>
#include <string>

using namespace std;

class Moto_ctrl
{
public:
    // 电机启动
    virtual void Moto_start()
    {
        cout << "基类 电机移动" << endl;
    }
    // 电机停止
    virtual void Moto_stop()
    {
        cout << "基类 电机停止" << endl;
    }
};

class Moto_x : public Moto_ctrl
{
public:
    // 电机启动
    void Moto_start()
    {
        cout << "x电机移动" << endl;
    }
    // 电机停止
    void Moto_stop()
    {
        cout << "x电机停止" << endl;
    }
};

class Moto_y : public Moto_ctrl
{
public:
    // 电机启动
    void Moto_start()
    {
        cout << "y电机移动" << endl;
    }
    // 电机停止
    void Moto_stop()
    {
        cout << "y电机停止" << endl;
    }
};

// 早绑定
void Moto_func(Moto_ctrl &M)
{
    M.Moto_start();
    M.Moto_stop();
}

int main(int argc, char const *argv[])
{
    Moto_x x;
    Moto_y y;

    Moto_func(x);
    Moto_func(y);
    
    return 0;
}
